package main

import "fmt"

// 定义一个Animal的接口 Animal中定义两个方法 分别是setName和getName


type Animal interface{
	setName(string)
	
}
type Animal1 interface{
	GetName() string
}
// 定义一个Dog
type Dog struct{
	Name string
}

//定义一个dog结构体实现接口方法 接收者是指针类型
func (d *Dog) setName(name string){
	d.Name = name
}
func (d *Dog) GetName() string{
	return d.Name
}
func main(){
	// Dog 实现Animal的接口
	// 实例化Dog结构体
	// 指针类型的接收者实例化的结构体方法
	d :=&Dog{
		Name:"小黑",
	}
	// 将结构体变量赋值给接口变量d1
	var d1 Animal =d //让Dog实现Animal这个接口
	var d2 Animal1 =d  //让Dog实现Animal1的接口
	d1.setName("小花狗狗")
	fmt.Println(d2.GetName())

}